{{tag>dapper reseau web serveur}}

----

====== Comment coupler Apache2 avec un serveur d'application Tomcat ? (avec support SSL) ======

===== Introduction =====

Le serveur d'application Tomcat est très pratique pour des projets J2EE d'envergure moyenne. Il est relativement simple à installer et à administrer.

Un serveur Tomcat sert les requêtes (HTTP) par défaut sur un port différent des ports standards destinés au web. Ces requêtes sont servies par le biais d'un petit moteur HTTP simpliste nommé //Coyote//. Bien que parfaitement adapté à des situations de développement, ce moteur HTTP est moins robuste qu'Apache pour la montée en charge et la gestion des caches. De plus, ce moteur //Coyote// ne prend pas en charge le SSL nativement.

Afin de palier aux inconvénients du moteur //Coyote//, bon nombre de sites de production utilisant Tomcat se sont naturellement tournés vers Apache.

Le but de ce document est d'expliquer comment coupler Apache 2 et le serveur d'application Tomcat avec le support SSL assuré par Apache 2.

===== Pré-requis =====

 En rédigeant cette documentation, je pars des principes suivants :
  - Vous avez une machine fonctionnelle et à jour sous Dapper.
  - Vous avez un [[:Tomcat]] installé et fonctionnel sur son port par défaut.
  - Vous avez un certificat SSL disponible dans ''/etc/ssl''. ([[tutoriel:comment_creer_un_certificat_ssl|une page expliquant la marche à suivre existe dans le wiki]])

===== Installation et configuration =====

==== Installation d'Apache 2 et du module ====

Tout d'abord, nous devons installer une version légèrement modifiée d'Apache 2. Nous installons donc le paquet ''apache2-mpm-prefork'' et le module destiné à faire le lien avec Tomcat ''libapache2-mod-jk'' :

<code>
sudo apt-get install apache2-mpm-prefork libapache2-mod-jk
</code>

Ensuite, nous effectuons une configuration de base du module jk. En éditant le fichier ''/etc/apache2/mods-available/jk.load'' de la manière suivante :

<file>
LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so

JkWorkersFile /etc/apache2/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

JkMount / worker1
JkMount /* worker1
</file>

Assurez-vous que le lien symbolique ''/etc/apache2/mods-enabled/jk.load'' existe bien et pointe bien vers ''/etc/apache2/mods-available/jk.load''.

==== Configuration du lien avec Tomcat ====

Créez le fichier ''/etc/apache2/workers.properties'' avec les informations suivantes :

<file>
workers.tomcat_home=/opt/apache-tomcat-5.5.20
workers.java_home=/usr/lib/jvm/java-1.5.0-sun
ps=/
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
</file>

Les valeurs ''tomcat_home'', ''java_home'' et ''worker1.host'' sont à adapter suivant votre configuration Tomcat et Java.

Redémarrez le serveur Apache.

<code>
sudo /etc/init.d/apache2 restart
</code>

A partir d'ici, vous devez pouvoir vous connecter sur le serveur Tomcat via le port 80 (et via Apache).

==== Activation du SSL ====

Dans le fichier ''/etc/apache2/ports.conf'', veillez à ce que le contenu soit comme suit :

<file>
Listen 80
Listen 443
</file>

Ajoutez les chargements des modules SSL dans Apache en ajoutant les liens symboliques pour ''ssl.conf'' et ''ssl.load'' par le biais de la commande suivante :

<code>
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
</code>

Ajoutez un site se chargeant des requêtes SSL en créant le fichier ''/etc/apache2/sites-available/mySite.https'' avec les données suivantes :

<file>
<VirtualHost machin.brol.com:443>
        ServerAdmin admin@brol.com
        ServerName machin.brol.com:443

        ErrorLog /var/log/apache2/error.log

        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
        SSLCertificateFile /etc/ssl/server.crt
        SSLCertificateKeyFile /etc/ssl/server.key
        SSLCACertificatePath /etc/ssl

        SetEnvIf User-Agent ".*MSIE.*" \
                         nokeepalive ssl-unclean-shutdown \
                         downgrade-1.0 force-response-1.0

</VirtualHost>
</file>

Assurez-vous que les certificats SSL se trouvent bien dans ''/etc/ssl''.

Activez votre nouveau site :

<code>
sudo ln -s /etc/apache2/sites-available/mySite.https /etc/apache2/sites-enabled/001-https
</code>

Redémarrez le serveur Apache.

<code>
sudo /etc/init.d/apache2 restart
</code>

----

// Contributeur : [[utilisateurs:ostaquet]] //